home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Programming / Programming Languages / Harvest C / MPW Int & Lib / Interfaces / Slots.h < prev    next >
Text File  |  1991-04-17  |  11KB  |  309 lines

  1. /************************************************************
  2.  
  3. Created: Sunday, January 6, 1991 at 10:02 PM
  4.     Slots.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.         Copyright Apple Computer, Inc.    1986-1990
  9.         All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef __SLOTS__
  15. #define __SLOTS__
  16.  
  17. #ifndef __TYPES__
  18. #include <Types.h>
  19. #endif
  20.  
  21. #ifndef __OSEVENTS__
  22. #include <OSEvents.h>
  23. #endif
  24.  
  25. #ifndef __OSUTILS__
  26. #include <OSUtils.h>
  27. #endif
  28.  
  29. #ifndef __FILES__
  30. #include <Files.h>
  31. #endif
  32.  
  33.  
  34. enum {
  35.  
  36.     fCardIsChanged = 1,             /*Card is Changed field in StatusFlags field of sInfoArray*/
  37.     fCkForSame = 0,                 /*For SearchSRT. Flag to check for SAME sResource in the table. */
  38.     fCkForNext = 1,                 /*For SearchSRT. Flag to check for NEXT sResource in the table. */
  39.     fWarmStart = 2,                 /*If this bit is set then warm start else cold start.*/
  40.  
  41.     stateNil = 0,                   /*State*/
  42.     stateSDMInit = 1,               /*:Slot declaration manager Init*/
  43.     statePRAMInit = 2,              /*:sPRAM record init*/
  44.     statePInit = 3,                 /*:Primary init*/
  45.     stateSInit = 4,                 /*:Secondary init*/
  46.  
  47. /* flags for spParamData */
  48.     fall = 0,                       /* bit 0: set=search enabled/disabled sRsrc's */
  49.     foneslot = 1,                   /*       1: set=search sRsrc's in given slot only */
  50.     fnext = 2                       /*       2: set=search for next sRsrc */
  51. };
  52.  
  53. struct SlotIntQElement {
  54.     Ptr sqLink;                     /*ptr to next element*/
  55.     short sqType;                   /*queue type ID for validity*/
  56.     short sqPrio;                   /*priority*/
  57.     ProcPtr sqAddr;                 /*interrupt service routine*/
  58.     long sqParm;                    /*optional A1 parameter*/
  59. };
  60.  
  61. typedef struct SlotIntQElement SlotIntQElement;
  62. typedef SlotIntQElement *SQElemPtr;
  63.  
  64. struct SpBlock {
  65.     long spResult;                  /*FUNCTION Result*/
  66.     Ptr spsPointer;                 /*structure pointer*/
  67.     long spSize;                    /*size of structure*/
  68.     long spOffsetData;              /*offset/data field used by sOffsetData*/
  69.     Ptr spIOFileName;               /*ptr to IOFile name for sDisDrvrName*/
  70.     Ptr spsExecPBlk;                /*pointer to sExec parameter block.*/
  71.     long spParamData;               /*misc parameter data (formerly spStackPtr).*/
  72.     long spMisc;                    /*misc field for SDM.*/
  73.     long spReserved;                /*reserved for future expansion*/
  74.     short spIOReserved;             /*Reserved field of Slot Resource Table*/
  75.     short spRefNum;                 /*RefNum*/
  76.     short spCategory;               /*sType: Category*/
  77.     short spCType;                  /*Type*/
  78.     short spDrvrSW;                 /*DrvrSW*/
  79.     short spDrvrHW;                 /*DrvrHW*/
  80.     char spTBMask;                  /*type bit mask bits 0..3 mask words 0..3*/
  81.     char spSlot;                    /*slot number*/
  82.     char spID;                      /*structure ID*/
  83.     char spExtDev;                  /*ID of the external device*/
  84.     char spHwDev;                   /*Id of the hardware device.*/
  85.     char spByteLanes;               /*bytelanes from card ROM format block*/
  86.     char spFlags;                   /*standard flags*/
  87.     char spKey;                     /*Internal use only*/
  88. };
  89.  
  90. typedef struct SpBlock SpBlock;
  91. typedef SpBlock *SpBlockPtr;
  92.  
  93. struct SInfoRecord {
  94.     Ptr siDirPtr;                   /*Pointer to directory*/
  95.     short siInitStatusA;            /*initialization E*/
  96.     short siInitStatusV;            /*status returned by vendor init code*/
  97.     char siState;                   /*initialization state*/
  98.     char siCPUByteLanes;            /*0=[d0..d7] 1=[d8..d15]*/
  99.     char siTopOfROM;                /*Top of ROM= $FssFFFFx: x is TopOfROM*/
  100.     char siStatusFlags;             /*bit 0 - card is changed*/
  101.     short siTOConst;                /*Time Out C for BusErr*/
  102.     char siReserved[2];             /*reserved*/
  103.     Ptr siROMAddr;                  /* addr of top of ROM */
  104.     char siSlot;                    /* slot number */
  105.     char siPadding[3];              /* reserved */
  106. };
  107.  
  108. typedef struct SInfoRecord SInfoRecord;
  109. typedef SInfoRecord *SInfoRecPtr;
  110.  
  111. struct SDMRecord {
  112.     ProcPtr sdBEVSave;              /*Save old BusErr vector*/
  113.     ProcPtr sdBusErrProc;           /*Go here to determine if it is a BusErr*/
  114.     ProcPtr sdErrorEntry;           /*Go here if BusErrProc finds real BusErr*/
  115.     long sdReserved;                /*Reserved*/
  116. };
  117.  
  118. typedef struct SDMRecord SDMRecord;
  119.  
  120. struct FHeaderRec {
  121.     long fhDirOffset;               /*offset to directory*/
  122.     long fhLength;                  /*length of ROM*/
  123.     long fhCRC;                     /*CRC*/
  124.     char fhROMRev;                  /*revision of ROM*/
  125.     char fhFormat;                  /*format - 2*/
  126.     long fhTstPat;                  /*test pattern*/
  127.     char fhReserved;                /*reserved*/
  128.     char fhByteLanes;               /*ByteLanes*/
  129. };
  130.  
  131. typedef struct FHeaderRec FHeaderRec;
  132. typedef FHeaderRec *FHeaderRecPtr;
  133.  
  134. struct SEBlock {
  135.     unsigned char seSlot;           /*Slot number.*/
  136.     unsigned char sesRsrcId;        /*sResource Id.*/
  137.     short seStatus;                 /*Status of code executed by sExec.*/
  138.     unsigned char seFlags;          /*Flags*/
  139.     unsigned char seFiller0;        /*Filler, must be SignedByte to align on odd boundry*/
  140.     unsigned char seFiller1;        /*Filler*/
  141.     unsigned char seFiller2;        /*Filler*/
  142.     long seResult;                  /*Result of sLoad.*/
  143.     long seIOFileName;              /*Pointer to IOFile name.*/
  144.     unsigned char seDevice;         /*Which device to read from.*/
  145.     unsigned char sePartition;      /*The partition.*/
  146.     unsigned char seOSType;         /*Type of OS.*/
  147.     unsigned char seReserved;       /*Reserved field.*/
  148.     unsigned char seRefNum;         /*RefNum of the driver.*/
  149.     unsigned char seNumDevices;     /* Number of devices to load.*/
  150.     unsigned char seBootState;      /*State of StartBoot code.*/
  151. };
  152.  
  153. typedef struct SEBlock SEBlock;
  154.  
  155.  
  156. #ifdef __cplusplus
  157. extern "C" {
  158. #endif
  159. /*  Principle  */
  160. #pragma parameter __D0 SReadByte(__A0)
  161. pascal OSErr SReadByte(SpBlockPtr spBlkPtr)
  162.     = {0x7000,0xA06E}; 
  163. #pragma parameter __D0 SReadWord(__A0)
  164. pascal OSErr SReadWord(SpBlockPtr spBlkPtr)
  165.     = {0x7001,0xA06E}; 
  166. #pragma parameter __D0 SReadLong(__A0)
  167. pascal OSErr SReadLong(SpBlockPtr spBlkPtr)
  168.     = {0x7002,0xA06E}; 
  169. #pragma parameter __D0 SGetCString(__A0)
  170. pascal OSErr SGetCString(SpBlockPtr spBlkPtr)
  171.     = {0x7003,0xA06E}; 
  172. #pragma parameter __D0 SGetBlock(__A0)
  173. pascal OSErr SGetBlock(SpBlockPtr spBlkPtr)
  174.     = {0x7005,0xA06E}; 
  175. #pragma parameter __D0 SFindStruct(__A0)
  176. pascal OSErr SFindStruct(SpBlockPtr spBlkPtr)
  177.     = {0x7006,0xA06E}; 
  178. #pragma parameter __D0 SReadStruct(__A0)
  179. pascal OSErr SReadStruct(SpBlockPtr spBlkPtr)
  180.     = {0x7007,0xA06E}; 
  181.  
  182. /*  Special  */
  183. #pragma parameter __D0 SReadInfo(__A0)
  184. pascal OSErr SReadInfo(SpBlockPtr spBlkPtr)
  185.     = {0x7010,0xA06E}; 
  186. #pragma parameter __D0 SReadPRAMRec(__A0)
  187. pascal OSErr SReadPRAMRec(SpBlockPtr spBlkPtr)
  188.     = {0x7011,0xA06E}; 
  189. #pragma parameter __D0 SPutPRAMRec(__A0)
  190. pascal OSErr SPutPRAMRec(SpBlockPtr spBlkPtr)
  191.     = {0x7012,0xA06E}; 
  192. #pragma parameter __D0 SReadFHeader(__A0)
  193. pascal OSErr SReadFHeader(SpBlockPtr spBlkPtr)
  194.     = {0x7013,0xA06E}; 
  195. #pragma parameter __D0 SNextSRsrc(__A0)
  196. pascal OSErr SNextSRsrc(SpBlockPtr spBlkPtr)
  197.     = {0x7014,0xA06E}; 
  198. #pragma parameter __D0 SNextTypeSRsrc(__A0)
  199. pascal OSErr SNextTypeSRsrc(SpBlockPtr spBlkPtr)
  200.     = {0x7015,0xA06E}; 
  201. #pragma parameter __D0 SRsrcInfo(__A0)
  202. pascal OSErr SRsrcInfo(SpBlockPtr spBlkPtr)
  203.     = {0x7016,0xA06E}; 
  204. #pragma parameter __D0 SCkCardStat(__A0)
  205. pascal OSErr SCkCardStat(SpBlockPtr spBlkPtr)
  206.     = {0x7018,0xA06E}; 
  207. #pragma parameter __D0 SReadDrvrName(__A0)
  208. pascal OSErr SReadDrvrName(SpBlockPtr spBlkPtr)
  209.     = {0x7019,0xA06E}; 
  210. #pragma parameter __D0 SFindDevBase(__A0)
  211. pascal OSErr SFindDevBase(SpBlockPtr spBlkPtr)
  212.     = {0x701B,0xA06E}; 
  213. #pragma parameter __D0 SFindBigDevBase(__A0)
  214. pascal OSErr SFindBigDevBase(SpBlockPtr spBlkPtr)
  215.     = {0x701C,0xA06E}; 
  216.  
  217. /*  Advanced  */
  218. #pragma parameter __D0 InitSDeclMgr(__A0)
  219. pascal OSErr InitSDeclMgr(SpBlockPtr spBlkPtr)
  220.     = {0x7020,0xA06E}; 
  221. #pragma parameter __D0 SPrimaryInit(__A0)
  222. pascal OSErr SPrimaryInit(SpBlockPtr spBlkPtr)
  223.     = {0x7021,0xA06E}; 
  224. #pragma parameter __D0 SCardChanged(__A0)
  225. pascal OSErr SCardChanged(SpBlockPtr spBlkPtr)
  226.     = {0x7022,0xA06E}; 
  227. #pragma parameter __D0 SExec(__A0)
  228. pascal OSErr SExec(SpBlockPtr spBlkPtr)
  229.     = {0x7023,0xA06E}; 
  230. #pragma parameter __D0 SOffsetData(__A0)
  231. pascal OSErr SOffsetData(SpBlockPtr spBlkPtr)
  232.     = {0x7024,0xA06E}; 
  233. #pragma parameter __D0 SInitPRAMRecs(__A0)
  234. pascal OSErr SInitPRAMRecs(SpBlockPtr spBlkPtr)
  235.     = {0x7025,0xA06E}; 
  236. #pragma parameter __D0 SReadPBSize(__A0)
  237. pascal OSErr SReadPBSize(SpBlockPtr spBlkPtr)
  238.     = {0x7026,0xA06E}; 
  239. #pragma parameter __D0 SCalcStep(__A0)
  240. pascal OSErr SCalcStep(SpBlockPtr spBlkPtr)
  241.     = {0x7028,0xA06E}; 
  242. #pragma parameter __D0 SInitSRsrcTable(__A0)
  243. pascal OSErr SInitSRsrcTable(SpBlockPtr spBlkPtr)
  244.     = {0x7029,0xA06E}; 
  245. #pragma parameter __D0 SSearchSRT(__A0)
  246. pascal OSErr SSearchSRT(SpBlockPtr spBlkPtr)
  247.     = {0x702A,0xA06E}; 
  248. #pragma parameter __D0 SUpdateSRT(__A0)
  249. pascal OSErr SUpdateSRT(SpBlockPtr spBlkPtr)
  250.     = {0x702B,0xA06E}; 
  251. #pragma parameter __D0 SCalcSPointer(__A0)
  252. pascal OSErr SCalcSPointer(SpBlockPtr spBlkPtr)
  253.     = {0x702C,0xA06E}; 
  254. #pragma parameter __D0 SGetDriver(__A0)
  255. pascal OSErr SGetDriver(SpBlockPtr spBlkPtr)
  256.     = {0x702D,0xA06E}; 
  257. #pragma parameter __D0 SPtrToSlot(__A0)
  258. pascal OSErr SPtrToSlot(SpBlockPtr spBlkPtr)
  259.     = {0x702E,0xA06E}; 
  260. #pragma parameter __D0 SFindSInfoRecPtr(__A0)
  261. pascal OSErr SFindSInfoRecPtr(SpBlockPtr spBlkPtr)
  262.     = {0x702F,0xA06E}; 
  263. #pragma parameter __D0 SFindSRsrcPtr(__A0)
  264. pascal OSErr SFindSRsrcPtr(SpBlockPtr spBlkPtr)
  265.     = {0x7030,0xA06E}; 
  266. #pragma parameter __D0 SDeleteSRTRec(__A0)
  267. pascal OSErr SDeleteSRTRec(SpBlockPtr spBlkPtr)
  268.     = {0x7031,0xA06E}; 
  269.  
  270. pascal OSErr OpenSlot(ParmBlkPtr paramBlock,Boolean async); 
  271. #pragma parameter __D0 OpenSlotSync(__A0)
  272. pascal OSErr OpenSlotSync(ParmBlkPtr paramBlock)
  273.     = 0xA200; 
  274. #pragma parameter __D0 OpenSlotAsync(__A0)
  275. pascal OSErr OpenSlotAsync(ParmBlkPtr paramBlock)
  276.     = 0xA600; 
  277.  
  278. /*  Device Manager Slot Support  */
  279. #pragma parameter __D0 SIntInstall(__A0,__D0)
  280. pascal OSErr SIntInstall(SQElemPtr sIntQElemPtr,short theSlot)
  281.     = 0xA075; 
  282. #pragma parameter __D0 SIntRemove(__A0,__D0)
  283. pascal OSErr SIntRemove(SQElemPtr sIntQElemPtr,short theSlot)
  284.     = 0xA076; 
  285.  
  286. #pragma parameter __D0 SVersion(__A0)
  287. pascal OSErr SVersion(SpBlockPtr spBlkPtr)
  288.     = {0x7008,0xA06E}; 
  289. #pragma parameter __D0 SetSRsrcState(__A0)
  290. pascal OSErr SetSRsrcState(SpBlockPtr spBlkPtr)
  291.     = {0x7009,0xA06E}; 
  292. #pragma parameter __D0 InsertSRTRec(__A0)
  293. pascal OSErr InsertSRTRec(SpBlockPtr spBlkPtr)
  294.     = {0x700A,0xA06E}; 
  295. #pragma parameter __D0 SGetSRsrc(__A0)
  296. pascal OSErr SGetSRsrc(SpBlockPtr spBlkPtr)
  297.     = {0x700B,0xA06E}; 
  298. #pragma parameter __D0 SGetTypeSRsrc(__A0)
  299. pascal OSErr SGetTypeSRsrc(SpBlockPtr spBlkPtr)
  300.     = {0x700C,0xA06E}; 
  301. #pragma parameter __D0 SGetSRsrcPtr(__A0)
  302. pascal OSErr SGetSRsrcPtr(SpBlockPtr spBlkPtr)
  303.     = {0x701D,0xA06E}; 
  304. #ifdef __cplusplus
  305. }
  306. #endif
  307.  
  308. #endif
  309.